46c30e
@@ -25,14 +25,19 @@
import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
+import org.infinispan.commons.marshall.Externalizer;
 import org.jboss.as.clustering.infinispan.io.AbstractSimpleExternalizer;
+import org.jboss.ejb.client.SessionID;
+import org.wildfly.clustering.ejb.infinispan.SessionIDExternalizer;
 
 /**
  * @author Paul Ferraro
  */
-public class InfinispanBeanKeyExternalizer<I> extends AbstractSimpleExternalizer<InfinispanBeanKey<I>> {
+public class InfinispanBeanKeyExternalizer extends AbstractSimpleExternalizer<InfinispanBeanKey<SessionID>> {
     private static final long serialVersionUID = -7421324153578768415L;
 
+    private final Externalizer<SessionID> externalizer = new SessionIDExternalizer();
+
     public InfinispanBeanKeyExternalizer() {
         this(InfinispanBeanKey.class);
     }
@@ -43,15 +48,15 @@
public class InfinispanBeanKeyExternalizer<I> extends AbstractSimpleExternalizer
     }
 
     @Override
-    public void writeObject(ObjectOutput output, InfinispanBeanKey<I> key) throws IOException {
+    public void writeObject(ObjectOutput output, InfinispanBeanKey<SessionID> key) throws IOException {
         output.writeUTF(key.getBeanName());
-        output.writeObject(key.getId());
+        this.externalizer.writeObject(output, key.getId());
     }
 
     @Override
-    public InfinispanBeanKey<I> readObject(ObjectInput input) throws IOException, ClassNotFoundException {
+    public InfinispanBeanKey<SessionID> readObject(ObjectInput input) throws IOException, ClassNotFoundException {
         String beanName = input.readUTF();
-        I id = (I) input.readObject();
+        SessionID id = this.externalizer.readObject(input);
         return new InfinispanBeanKey<>(beanName, id);
     }
 }
